草庐IT

Java Swingworker 和多线程

全部标签

java - AsyncHttpClient 是否知道为所有 HTTP 请求分配多少线程

我正在评估AsyncHttpClient对于大负载(~1MHTTP请求)。对于每个请求,我想使用AsyncCompletionHandler调用回调,它只会将结果插入阻塞队列我的问题是:如果我在紧密循环中发送异步请求,AsyncHttpClient将使用多少个线程?(我知道你可以设置最大值,但显然你冒着丢失请求的风险,我已经看到了here)我目前在这些版本中使用Netty实现:async-http-clientv1.9.33nettyv3.10.5.Final如果以后的版本有什么优化的话,我不介意使用其他版本编辑:我读到Netty使用reactorpattern要对HTTP响应使用re

java - 静态方法线程中的 Java 数组是否安全?

publicstaticintrank(intkey,int[]a){intlo=0;inthi=a.length-1;while(loa[mid])lo=mid+1;elsereturnmid;}return-1;}上面的静态方法进行二分查找。它是线程安全的吗?我知道局部变量是线程安全的,但是这里的“a”是一个数组,所以这意味着它是Java中的一个对象,对吧?那是问题吗?该数组只是被读取,没有以任何方式修改,所以我假设这个方法是线程安全的。但我想确保我理解原因。谢谢! 最佳答案 没有数组通常不是线程安全的。你的代码是否在这种情况下

java - 所有这些默认线程都应该运行吗?它们能让我的 JVM 保持活力吗?

我对我的应用程序在执行期间生成的线程及其状态有疑问。我有一个Swing应用程序,我注意到在某些测试场景中使用JavaVisualVM时出现了一些奇怪的行为。无所事事地运行我的程序30多分钟(刚开始并让它继续运行)我注意到以下内容。首先,在“线程”选项卡中,我看到很多Activity线程。阅读(除其他外)Defaultthreadslike,DestroyJavaVM,ReferenceHandler,SignalDispatcher和WhatarethesethreadswhicharespwanedwhenaJavaapplicationbeginsitsexecution?我知道这

java - 什么定义了 "active"线程?

在Java并发中,是什么让线程“活跃”?只是它没有空转吗?从技术上讲,“等待”或“暂停”线程是否仍被视为Activity线程? 最佳答案 据我所知,“活跃”一词似乎被广泛使用但从未被定义过。ThreadGroup.enumerate()方法记录为:Copiesintothespecifiedarrayeveryactivethreadinthisthreadgroupanditssubgroups.来自lookingatthesourceforthis,它正在检查Thread.isAlive()方法并将它们添加到可枚举的。由此我推断

java Timer TimerTask多线程

我正在使用Timer和TimerTask长时间轮询聊天应用程序的新消息。我想研究两种“略有”不同的可能性:1:定时器声明为局部变量publicListgetLastMessages(...){[...]Timertimer=newTimer(true);//**Timerdeclaredaslocalvariable**while(someCondiction){MessagesTimerTaskreturnMessagesTask=newMessagesTimerTask([...]);timer.schedule(returnMessagesTask,6000);synchroni

java - 使用 LinkedBlockingQueue 对多线程 java 程序足够好吗?

我有一个消费者和一个生产者,它们从队列中添加和删除Item对象。如果我使用put()和take()方法。我还需要解决任何线程安全问题吗?这类似于有界缓冲区问题,我只是想知道是否使用阻塞队列来代替对信号量或监视器的需求。Item对象本身可能需要同步(setter但getter不需要锁),对吗?最后,我不太确定如何测试它是否是线程安全的,因为我不能同时让两个线程调用take()因为执行顺序是不确定的。有任何想法吗?谢谢。 最佳答案 对于您正在做的事情,它是完全线程安全的,事实上这就是它的设计目的。BlockingQueue的说明(这是L

java - Spring DI 的线程安全影响

在我设计的示例中,关于teamMembers列表的线程安全有何影响?我能否依赖run()方法看到的列表状态保持一致?假设setATeamMembers方法仅在创建ATeamEpisodebean时由spring调用一次init方法在#1之后被spring(init-method)调用ATeamMember类是不可变的我是否需要声明teamMembersvolatile或类似的?我的这种方法还有其他可怕的问题吗俯瞰?如果这是显而易见的,或者rtfm的明显失败,我们深表歉意感谢和问候埃德packageaTeam;importjava.util.ArrayList;importjava.ut

java - Java中的一种负载平衡线程池

我正在寻找一个负载平衡的线程池,但到目前为止没有成功。(不确定负载平衡是否是正确的措辞)。让我解释一下我试图实现的目标。第1部分:我有乔布斯,有8到10个单一任务。在6核CPU上,我让8个线程并行处理此任务,这似乎提供了最佳性能。当一项任务准备就绪时,另一项任务可以开始。一旦完成所有十项任务,就完成了完整的工作。通常一项工作在30到60秒内完成。第二部分:不幸的是,有时这项工作需要两个多小时。由于必须计算的数据量,这是正确的。糟糕的是,在job1运行时没有其他作业可以启动(假设所有线程具有相同的持续时间),因为它正在使用所有线程。我的第一个想法:有12个线程,最多允许三个作业并行。但是

java - 同时读取数组线程安全吗?

我有一个数组,其中包含如下声明的整数值:intdata[]=newint[n];每个值都需要处理,我将工作分成几部分,以便可以由单独的线程处理。该数组在处理过程中不会被修改。所有处理线程能否同时读取数组的不同部分?还是我必须使用锁?换句话说:这个工单是线程安全的吗?ArrayiscreatedandfilledThreadsarecreatedandstartedThread0readsdata[0..3]Thread1readsdata[4..7]Thread2readsdata[8..n] 最佳答案 由多个线程读取数组(或任何其

java - Glassfish 线程池、接受器线程、HTTP 最大连接数

请看附图,请帮助我理解线程池(最大和最小线程池大小)、接受器线程及其最大连接数和HTTP最大连接数之间的关系。线程池:HTTP:传输TCP: 最佳答案 先给大家一些官方文档线程池线程池是服务器可以同时处理的最大请求数。服务器有一个等待线程处理的连接队列。请记住,线程的请求生命周期会很长。也就是说,不仅在从套接字读取HTTP请求时,或在向客户端写入HTTP响应时,而且它一直在处理业务逻辑、等待DB完成、写入日志文件、发送/接收WS方法,...阅读:https://docs.oracle.com/cd/E18930_01/html/82